home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
System Booster
/
System Booster.iso
/
Commodities
/
Flusher
/
flusher.p
< prev
Wrap
Text File
|
1996-09-26
|
4KB
|
162 lines
PROGRAM Flusher;
{ Kleiner Quickhack zum Flushen von
Commodities
(C) 1995 by Björn Schotte
Weiterentwicklung/Neuschreibung des Programms
FlushCX von Jan Stötzer!
Grund: Vermisste ein File, in dem Commodities
eingetragen werden, die NICHT gekillt werden
sollen.
----------------- Disclaimer ----------------
This Program is PUBLIC DOMAIN. Do with it
whatever you want to do...
The Author is not responsible for any damages
this program makes on your computer!!
---------------------------------------------
Address:
(Please include return postage!)
Björn Schotte
Am Burkardstuhl 45
D-97267 Himmelstadt
GERMANY
EMail:
bombersoft@bomber.mayn.sub.de }
{$opt q}
USES ExecSupport;
{$incl "commodities.lib",
"dos.lib"}
CONST
rev = "$VER: Flusher V1.00 (25.05.1995)";
MAXNAMES = 30;
ExceptFile = "ENVARC:Flusher.dat";
TYPE p_BrokerCopy = ^BrokerCopy;
BrokerCopy = RECORD
bc_Node : Node;
bc_Name : string[CBD_NAMELEN];
bc_Title: string[CBD_TITLELEN];
bc_Descr: string[CBD_DESCRLEN];
bc_Task,bc_Dummy1,bc_Dummy2 : long;
bc_Flags: word;
END;
VAR
BrokerL : p_List;
copied,
anz,i,
flushed : LONG;
n : p_Node;
cop : p_BrokerCopy;
f : Text;
names : ARRAY[1..MAXNAMES] OF STRING;
found : BOOLEAN;
LIBRARY CxBase:
-186 : FUNCTION CopyBrokerList(A0:p_List):long;
-192 : FUNCTION FreeBrokerList(A0:p_List):long;
-198 : PROCEDURE BrokerCommand(A0:str;D0:long);
END;
PROCEDURE ReadInFile;
BEGIN
anz := 0;
Reset(f,ExceptFile);
IF IOResult = 0 THEN
BEGIN
WHILE NOT EOF(f) DO
BEGIN
Inc(anz);
ReadLn(f, names[anz]);
END;
Close(f);
END;
END;
{ Sauberes Verlassen des Programms. }
PROCEDURE CleanUp(why:STRING;rc:INTEGER);
BEGIN
IF CXBase <> NIL THEN CloseLibrary(CXBase);
IF why <> "" THEN Writeln(why);
DosExit(rc);
END;
{ Öffnen der Library }
PROCEDURE OpenLibs;
BEGIN
CXBase := OpenLibrary("commodities.library", 37);
IF CXBase = NIL THEN CleanUp("Couldn`t open commodities.library!",20);
END;
PROCEDURE InitBrokerL;
BEGIN
BrokerL := PTR(AllocVec(SizeOf(List),MEMF_ANY+MEMF_CLEAR));
IF BrokerL = NIL THEN CleanUp("Not enough memory free!",20);
NewList(BrokerL);
copied := CopyBrokerList(BrokerL);
END;
PROCEDURE FlushBrokers;
LABEL weiter;
BEGIN
n := BrokerL^.lh_head;
REPEAT
cop := p_BrokerCopy(PTR(n));
IF anz > 0 THEN
BEGIN
FOR i := 1 TO anz DO
BEGIN
found := FALSE;
IF cop^.bc_Name = names[i] THEN
BEGIN
found := TRUE;
GOTO weiter;
END{ ELSE IF names[i] = "" THEN found := TRUE}
ELSE found := FALSE;
END;
weiter:
IF found = FALSE THEN
BEGIN
BrokerCommand(cop^.bc_name,CXCMD_KILL);
Inc(flushed);
END;
END ELSE
BEGIN
BrokerCommand(cop^.bc_Name,CXCMD_KILL);
Inc(flushed);
END;
n := n^.ln_succ;
UNTIL n = NIL;
copied := FreeBrokerList(BrokerL);
FreeVec(BrokerL);
END;
BEGIN
IF FromWB THEN HALT(20);
Writeln("Flusher V1.00 (C) 1995 by Björn Schotte -=- PUBLIC DOMAIN");
Writeln;
CXBase := NIL;
BrokerL := NIL;
flushed := 0;
OpenLibs;
InitBrokerL;
ReadInFile;
FlushBrokers;
Writeln(flushed:2," Commodities killed...");
CleanUp("",0);
END.